package com.xiaoh.dormitoryrepairreportbackend.service;

import com.xiaoh.dormitoryrepairreportbackend.model.dto.ai.AiAssignmentResult;
import com.xiaoh.dormitoryrepairreportbackend.model.dto.ai.AiRecommendationResponse;
import com.xiaoh.dormitoryrepairreportbackend.model.dto.user.UserResponse;
import com.xiaoh.dormitoryrepairreportbackend.model.entity.WorkOrder;

import java.util.List;

/**
 * AI工单分配服务
 */
public interface AiWorkOrderAssignmentService {

    /**
     * 使用AI分配工单给合适的维修工
     *
     * @param workOrder 工单信息
     * @return AI分配结果
     */
    AiAssignmentResult assignWorkOrder(WorkOrder workOrder);

    /**
     * 获取工单分配的提示词
     *
     * @param workOrder           工单信息
     * @param availableMaintenanceInfo 可用维修工信息
     * @return 提示词
     */
    String buildPrompt(WorkOrder workOrder, String availableMaintenanceInfo);

    /**
     * 根据工单推荐维修人员
     *
     * @param workOrderId 工单ID
     * @param count 推荐数量，默认5个
     * @return 推荐的维修人员列表
     */
    List<UserResponse> recommendMaintenanceWorkers(Long workOrderId, Integer count);

    /**
     * 根据工单推荐维修人员（包含AI分析结果）
     * 使用与添加工单时自动分配维修工一致的AI逻辑
     *
     * @param workOrderId 工单ID
     * @param count 推荐数量，默认5个
     * @return AI推荐结果和维修工信息
     */
    AiRecommendationResponse recommendMaintenanceWorkersWithAiResult(Long workOrderId, Integer count);
}
